// 要求通过寄生组合式继承使"Chinese"构造函数继承于"Human"构造函数。要求如下：
// 1. 给"Human"构造函数的原型上添加"getName"函数，该函数返回调用该函数对象的"name"属性
// 2. 给"Chinese"构造函数的原型上添加"getAge"函数，该函数返回调用该函数对象的"age"属性
function Human(name) {
  this.name = name;
  this.kingdom = "animal";
  this.color = ["yellow", "white", "brown", "black"];
}
Human.prototype.getName = function () {
  return this.name;
};

// 3. 定义子类构造函数
function Chinese(name, age) {
  // 3.1 盗用父类构造函数（继承实例属性）
  Human.call(this, name); // 关键步骤 1
  this.age = age;
  this.color = "yellow"; // 覆盖父类属性
}

// 4. 寄生继承核心步骤
(function () {
  // 4.1 创建中间函数（避免直接new父类构造函数导致父类实例属性污染子类原型。）
  const Temp = function () {};
  Temp.prototype = Human.prototype; // 继承父类原型

  // 4.2 创建原型副本并修正constructor
  Chinese.prototype = new Temp(); // 关键步骤 2
  Chinese.prototype.constructor = Chinese; // 修复constructor指向
})();

Chinese.prototype.getAge = function () {
  return this.age;
};
